在此分享在單一主機上安裝二個Instance來實作資料庫鏡像備援機制,
好處是無須花時間建立二台VM即可進行實作。
首先我先安裝了二個Instance,分別是:
主體端:THINK
鏡像端:THINK\SQLSERVER2008R2
以下全程使用指令實作不透過UI設定,共分為四個步驟:
步驟1.
連至主體端Instance(THINK),進行資料庫完整和交易備份。
--先備份主體端的備份檔
use [master]
--完整備份
BACKUP DATABASE [APPSYS] TO DISK = N'D:\DBBackup\appsys.bak' WITH INIT,COMPRESSION
GO
--交易備份
BACKUP LOG [APPSYS] TO DISK = N'D:\DBBackup\appsys.trn' WITH INIT,COMPRESSION
GO
步驟2.
接著連至鏡像端(備援機)進行還原動作,記得要將資料庫還原成NORECOVERY模式。
USE [master]
--還原完整備份
RESTORE DATABASE [APPSYS] FROM DISK = N'D:\DBBackup\appsys.bak' WITH
MOVE N'APPSYS' TO N'D:\DB Files\APPSYS.mdf',
MOVE N'APPSYS_log' TO N'D:\DB Files\APPSYS_log.ldf',
NORECOVERY, REPLACE
GO
--還原交易備份
RESTORE LOG [APPSYS] FROM DISK = N'D:\DBBackup\appsys.trn' WITH NORECOVERY, NOUNLOAD, REPLACE
GO
步驟3.
建立鏡像同步時所需要的資料庫端點,因為在同一台主機所以要各指定不同的Port。
--連至主體端建立端點,使用Port 5022
USE [master]
GO
CREATE ENDPOINT [Mirroring_Endpoint]
STATE=STARTED
AS TCP (LISTENER_PORT = 5022, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE
, ENCRYPTION = DISABLED)
GO
--查看是否有建立成功
SELECT type_desc, port,name,state_desc FROM sys.tcp_endpoints
--連至鏡像端建立端點,使用Port 5023
USE [master]
GO
CREATE ENDPOINT [Mirroring_Endpoint]
STATE=STARTED
AS TCP (LISTENER_PORT = 5023, LISTENER_IP = ALL)
FOR DATA_MIRRORING (ROLE = PARTNER, AUTHENTICATION = WINDOWS NEGOTIATE
, ENCRYPTION = DISABLED)
GO
--連至鏡像端建立端點
SELECT type_desc, port,name,state_desc FROM sys.tcp_endpoints
步驟4.
使用指令來啓動鏡像同步,先執行鏡像端的指令之後再執行主體端的。
--鏡像端
ALTER DATABASE APPSYS SET PARTNER ='tcp://THINK:5022';
--主體端
ALTER DATABASE APPSYS SET PARTNER ='tcp://THINK:5023';
資料庫鏡像機制建立成功!
可在資料庫->工作->啓動資料庫鏡像監視器,可以看到目前資料庫同步的情況以及等待被傳輸的資料量。
參考連結:
指定伺服器網路位址 (資料庫鏡像)
https://docs.microsoft.com/zh-tw/sql/database-engine/database-mirroring/specify-a-server-network-address-database-mirroring